自制廉价的Arm9 开发平台

更多资料请到->家电维修技术论坛 发表时间 11-27 编辑:guohuiping 浏览量: 666

摘要:基于Arm9内核的单片机,由于其低廉的价格与优越的性能,已经被广泛的应用于各种消费类电子产品中。掌握Arm9单片机的开发技能已经成为嵌入式系统开发者的迫切要求。但由于市面上的Arm9开发板价格不菲,使不少想学习Arm9开发技术的朋友望而却步,其中有一大部分是各大高校的学生。本文阐述了改造ipTIME的IP0422路由器,使其成为VxWorks和Linux的Arm9开发平台的过程。整个过程简单易行,同时花费在150元以内,是嵌入式系统开发爱好者不错的选择。

1 改造系统的选取
    要动手改造Arm9开发系统,首先要选取一款进行改造的产品。现在基于Arm9内核的单片机被广泛的应用于家用路由器和手机当中,因而这两类产品可以作为我们寻找改造对象的范围。但由于手机总体的价格偏高,同时集成度比较高,电路系统复杂,因而不适合作为我们改造的对象。而路由器恰恰相反,现在100多元的路由器比比皆是,而且这些路由器基本使用单芯片,该芯片除了具有Arm9核心的控制功能外,还具有硬件上的路由算法支持,因而电路相对简单,便于改造,所以廉价的路由器就是改造Arm9开发板的合适对象。经过反复比较以后,最终选择了ipTIME的IP0422。该款路由器的市场价格在100元左右,主芯片为KS8695X,是高度集成化的网络通讯处理器,具有ARM922T内核。同时该路由器还具有2M Flash,8M SDRAM,同时还留有一个SDRAM焊位,可以方便的把SDRAM的容量扩充为16M,为我们运行操作系统提供了足够的空间。选择该款路由器的另一个主要原因时KS8695X芯片提供了完备的开发资料,可以方便的从Micrel公司的FTP上(

图1 改造完成电路板与电路板版本号

2 硬件改造
2.1 串口
串口对一个嵌入式系统是致关重要的,通过串口可以与嵌入式系统进行交互。我们首先进行系统的串口改造。如图2所示,电路板上原本就将串口以4星条针的形式引出,估计是为了以后方便维修而设置的。经过分析发现,为了抗干扰,电路板上将主芯片串口的RX管脚进行了上拉,因而在一般使用中主芯片不会接收到任何的输入信号。所以我们对串口的改造分为两步:1、去掉RX管脚上的上拉电阻;2、自己搭建一个串口电平转换电路,使串口可以与PC机通信。串口各管脚定义与要去掉的电阻如图2所示。

图2 串口电路
    串口电平转换电路负责单片机串口与PC机串口间电平的转换工作,使两者可以正常通信。串口电平转换电路使用最多的是MAXIM公司的产品,在这里可以使用MAX3232或MAX232,两者连接的电路原理图是相同的。由于MAX3232是使用3.3V进行供电的,所以可以直接与上图所示的4个管脚进行连接。若使用MAX232芯片,则要将芯片的供电管脚与电路板上输入电源5V相联。我使用的是MAX232芯片,5V电源端的连接如图3所示。MAX232、MAX3232连接原理图如图4所示:

图3 MAX232 5V连接端

图4 MAX232、MAX3232连接原理图
由于以上接口电路比较简单,假如没有现成的串口电路板,可以直接购买面包板,在上面搭建,以后所说的接口电路也可用此方法构建,不再赘述。将相应的电路连接好后,与PC机的串口相连,打开串口工具DNW(超级终端也可以),设置波特率为38400,数据位为8,奇偶校验为无,停止位为1,硬件流控制为0(后面使用的串口设置只有波特率不同,其他设置都按此设置)。连接开发板的电源后,可以看到路由器启动时的提示信息,如图5所示,说明串口改造成功。

 

 

图6 JTAG接口与相应连线

图7 简易JTAG接口原理图
     接口构造完成后,可以使用wiggle的简易JTAG口与计算机的并口相连。Wiggle的电路原理图如图7所示。从

图8 AXD中CP15寄存器的设置
    在Command窗口中键入命令obey C:\cfg.ini(假定自己编写的配置文件cfg.ini在C盘根目录下),SDRAM被映射到了0x0—0xFFFFFF区域,Flash被映射到了0x2800000—0x29fffff区域。将Flash烧写程序下到0x0处开始运行,将串口波特率设置为115200,串口输出如图9所示。按“1”键选择烧写Flash,从DNW的“serial port”菜单中选transmit,然后选择发送要烧录的文件就可以对Flash进行擦写了。我的路由板上使用的Flash芯片型号为Spansion公司的S29AL016D70,不同型号的Flash,扇区分布与厂家ID可能不同,擦写协议也有可能不同,要对相应部分的程序做适当的修改。

图9 Flash擦写程序串口输出

3.2 VxWorks BSP包的移植
    Demo程序自带VxWorks的BSP包。根据Demo板的Datasheet[1]和VxWorks说明文档[2]中的说明,我们选择与这块路由板的配置基本相同的KS8695X构建目标进行改造。经过比较两者最大的差别就是在Flash部分,因而需要改写BSP包中与Flash接口的部分。其中包括Flash的初始化、擦写逻辑、程序在Flash中的布局,文件系统与Flash的接口等[3]。涉及到的主要文件与实现的功能如表1所示:

文件名
修改说明
Ks8695p.h、config.h
提供路由板相关寄存器设置值
flashFsLib.c
实现FAT文件系统接口
flashDrvLib.c
实现Flash操作接口
flashAmdMem.h、flashAmdMem.c
具体实现S29AL016D70的各种操作
flashMem.h、flashMem.c
提供程序在Flash中存储的位置和系统记录启动参数的接口

表1 BSP修改相关文件说明
    将相关文件修改好后,根据BSP说明[2]中的方法编译bootrom,选择的编译目标是KS8695X。接下来根据说明中的方法编译适用于网络下载的VxWorks映象和适用于Flash引导的VxWorks映象,同样使用的编译目标是KS8695X。将bootrom下载到路由板上,同时设置好FTP服务器,设置串口波特率为9600,默认情况下bootrom通过FTP从网络上下载引导启动VxWorks映象,启动过程如图10所示。也可以修改bootrom中的启动参数,从Flash的FAT文件系统中引导启动VxWorks映象,启动过程如图11所示。经过修改的BSP实现原有BSP的所有功能,各项功能的使用及参数设置参见BSP说明[2],在此不再赘述。

图10 网络引导VxWorks输出

图11 Flash引导VxWorks输出

3.3 u-boot和Linux的移植
    开发包中带有供Demo使用的Linux系统,由于Demo板使用的Flash为4M[4],该Linux系统中Linux内核加上文件系统有2M多,路由板上使用的是2M的Flash,而且没有扩充的可能性,显然不能直接使用。经过对Demo板自带的引导程序的分析,发现Demo板在运行Linux前,引导程序将Linux系统整个拷贝到16M的SDRAM中运行。我们的路由板已经扩充为16M的SDRAM,所以我们可以不将Linux系统存储在Flash中,而直接使用网络,将Linux系统下载到SDRAM中然后运行。当然,要将Linux直接下载到SDRAM中运行,还需要有引导程序的帮助。u-boot是Arm系统中广泛使用的引导程序,同时其中已经有使用KS8695芯片的构建目标,目标的配置名称是cm4008,所以我们选择在原来的构建目标上进行改造,将u-boot移植到我们的路由板上。关于u-boot的移植的文章网上很多,移植方法在此就不再赘述,涉及到的主要文件与实现的功能如表2所示:

文件名
修改说明
include\configs\cm4008.h
u-boot特定平台的配置文件
include\asm-arm\arch-ks8695\platform.h
硬件平台的参数设置
board\cm4008.c
u-boot初始化设置
board\flash.c
u-boot中flash的接口部分
drivers\ks8695eth.c
u-boot中使用KS8695的驱动

表2 Linux修改相关文件说明
    需要特别注意的是u-boot中自带的KS8695芯片的网口驱动是使用路由板上的LAN口[5],而不是WLAN口,因而在下载Linux系统时网线应该插在LAN口上。同时,该驱动程序在复位网口时有个错误,会导致除第一次下载文件正常外,后续的下载文件都发生错误,需要手动修改源文件加以修正。将串口波特率设置为115200,启动u-boot。通过设置u-boot环境变量,修改串口波特率为38400,设置路电板的IP地址和PC机端的IP程序。以及默认的引导参数bootcmd,如图12所示。

图12 u-boot默认参数的设置
其中zImage和ramdisk.gz分别是Demo板Linux系统编译所得的Linux内核和文件系统,编译的方法详见开发包中带的Linux说明手册[4],param.bin是由Demo所带的bootloader分析得到的启动参数。将这些文件通过u-boot的TFTP功能下载到SDRAM中的指定位置,然后运行,串口输出如下图所示:

图13 u-boot引导Linux输出
启动过程中会出现Flash设备加载错误,这是由于没有修改Linux中的Flash驱动,由于Flash只是起到保存网页设置的作用,因而不会影响Linux的正常运行,有兴趣的朋友可以自己修改。启动完成后,访问Linux中的http设置网页如图14所示。

图14 Linux设置网页

4 结语
    本文详细阐述了将IP0422路由器改造为适合于学习VxWorks与Linux操作系统的Arm9平台的过程。整个过程花费低廉,改造过程简单易行。同时在改造过程中还可以学到嵌入式系统软件与硬件的多方面知识。该改造方案是动手能力强,同时又不想花很多钱购买开发板的嵌入式开发爱好者的不错的选择。

参考文献:
1、Micrel. KS8695/KS8695X Demo Board User’s Guide. USA: Micrel Company, 2004
2、Micrel. KS8695-Family VxWorks BSP User’s Manual. USA: Micrel Company, 2004
3、周启平,张杨.VxWorks下设备驱动程序及BSP开发指南.北京:中国电力出版社,2004
4、Micrel. KS8695X SOHO Router Quick Start Guide. USA: Micrel Company, 2004
5、Micrel. KS8695X Register Description. USA: Micrel Company, 2004

本文出自家电维修网: http://www.bjjdwx.com/wz/2008-11-27/906.html欢迎转载,转载请保留链接。

  • 刊登此文只为传递信息,并不表示赞同或者反对作者观点。
  • 如果此内容给您造成了负面影响或者损失,本站不承担任何责任。
  • 如果内容涉及版权问题,请及时与我们取得联系。

文章评论

共有 位网友发表了评论 查看完整内容